#include <iostream>
#include "Indice.h"
#include "BloqueTexto.h"
#include "LZP.h"
#include "BitHandlerOutput.h"
#include <fstream>
using namespace std;


int main() {

	/****************** PRUEBA DE HEURISTICA DE COMPRESION***********************/

//	Indice *ind = new Indice();
//	BloqueTexto *t = new BloqueTexto();
//	char te[] = "ABABCABCBABDBABFABGABQABMABAABMABYNNNNNNNNNNNNNNNNNNNNn";
//	t->setTexto(te);
//	t->setCantCaracteresValidos(55);
//	Compresion *compr = new Compresion(2);
//	int i = 2;
//	while(!t->finBloque() && !t->finArchivo())
//	{
//		compr->setPosicionCaracterActual(i);
//		compr->setContexto(te[i-2], te[i-1]);
//		compr = ind->generarCompresion(compr, *t);
//		i+= 1 + compr->getLongitud();
//	}
//
//	Indice *ind2 = new Indice();
//	BloqueTextoSalida *sal = new BloqueTextoSalida();
//	//char text[50] = "ABC";
//	//sal->setTexto(text);
//	sal->setCaracterEnPos('A',0);
//	sal->setCaracterEnPos('B',1);
//	sal->setCaracterEnPos('C',2);
//
//	Compresion *c = new Compresion(3);
//	c->setLongitud(2);
//	c->setCaracter('i');
//	c->setContexto('A','B');
//	Contexto *cont = new Contexto();
//	cont->addPrediccion(0);
//	cont->getPrimerPrediccion()->setPosicion(1);
//	cont->getPrimerPrediccion()->setPuntaje(20);
//	ind2->setContexto(65066, cont);
//	ind2->generarDescompresion(c, *sal);
//	for(int i = 0; i<6; i++)
//	cout<<sal->getCaracterEnPos(i);




	/****************** PRUEBA DE CONCATENACION *************************/

//	char car1 = 'l';
//	char car2 = ' ';
//	int a =(int) car1;
//	cout<<a<<" ";
//	a = (int) car2;
//	cout<<a<<" ";
//	int aux = ind->obtenerPosContexto(car1,car2);
//	cout<<aux<<" ";
//	return 0;
	ofstream ofs;
	ofs.open("prueba2.txt",ios::binary);
	ofs<<"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
	ofs.close();
	ifstream archivo;//=new ifstream();//("prueba2.txt");//,ios::binary|ios::in);
	archivo.open("prueba2.txt",ios::binary);
	cout<<archivo.good()<<endl;
	archivo.close();
	LZP lzp;
	BitHandlerOutput bho("prueba.lzp",ios::binary);
	lzp.comprimir("prueba2.txt",bho,0);
	bho.cerrarArchivo();

	BitHandlerInput bhi("prueba.lzp",ios::binary);
	lzp.descomprimir("pruebasalida.txt",bhi,0);

}
